#include "stm32f10x.h"
#include "MyFlash.h"

#define STORE_START_ADDRESS 0x0800fc00
#define STORE_COUNT 512

// 第一个位不可用，是标志位
uint16_t Store_Data[STORE_COUNT];

void Store_Init(void) {
    // 初始化闪存
    if (MyFlash_ReadHalfWord(STORE_START_ADDRESS) != 0xA5A5) {
        MyFlash_ErasePage(STORE_START_ADDRESS);
        MyFlash_ProgramHalfWord(STORE_START_ADDRESS, 0xA5A5);
        for (uint16_t i = 1;i < STORE_COUNT;i++) {
            MyFlash_ProgramHalfWord(STORE_START_ADDRESS + i * 2, 0x0000);
        }
    }

    // 读取闪存数据到 Store_Data
    for (uint16_t i = 0;i < STORE_COUNT;i++) {
        Store_Data[i] = MyFlash_ReadHalfWord(STORE_START_ADDRESS + i * 2);
    }
}

void Store_Save(void) {
    MyFlash_ErasePage(STORE_START_ADDRESS);
    for (uint16_t i = 0;i < STORE_COUNT;i++) {
        MyFlash_ProgramHalfWord(STORE_START_ADDRESS + i * 2, Store_Data[i]);
    }
}

void Store_Clear(void) {
    for (uint16_t i = 1;i < STORE_COUNT;i++) {
        Store_Data[i] = 0x0000;
    }
    Store_Save();
}
